package com.sakura.singleton.type07;

import java.util.Optional;

/**
 * //TODO 枚举实现
 *
 * 优缺点说明：
 * 1) 这借助JDK1.5中添加的枚举来实现单例模式。不仅能避免多线程同步问题，而
 * 且还能防止反序列化重新创建新的对象。
 * 2) 这种方式是Effective Java作者Josh Bloch 提倡的方式
 * 3) 结论：推荐使用
 *
 * @Author Sakura
 * @Date 2022/11/10 9:17
 * @Version 1.0
 */
public class SingletonTest07 {
    public static void main(String[] args) {
        Singleton instance = Singleton.INSTANCE;
        Singleton instance2 = Singleton.INSTANCE;
        System.out.println(instance == instance2);

        System.out.println(instance.hashCode());
        System.out.println(instance2.hashCode());

        instance.sayOK();

        String a="12312312             234234";
        System.out.println(a);

        System.out.println(a.replace(" ",""));
        System.out.println(a.replaceAll(" +",""));
        a="       ";
        System.out.println(a.replaceAll(" +",""));
        Optional<String> s = Optional.ofNullable(null);
        System.out.println(s.orElse("123"));
        System.out.println(Optional.of("null").orElse("222"));

        String s1 = Optional.ofNullable("66666  77666666").orElse("").replaceAll(" +", "");
        System.out.println("s1 = " + s1);
        System.out.println("s1 = " + s1);
    }
}

//使用枚举，可以实现单例, 推荐
enum Singleton {
    INSTANCE; //属性

    public void sayOK() {
        System.out.println("ok~");
    }
}